package com.chixing.day10_hashcode_exception;

import com.chixing.day10_hashcode_exception.exception.BalanceNotEnoughException;

public class HandlerExceptionDemo {
    public static void main(String[] args) throws BalanceNotEnoughException {
    /*   //调用方
        HandlerExceptionDemo.fun1();
        fun2(); //调用fun2() 异常未被处理 抛出  （不是所有的都要一致抛出 各功能要完成自己的功能）*/

        fun4();
    }


    public static void fun4(){

        Account account = new Account();
        account.setAccBalance(150);

        try{
            System.out.println("try1");
            int a = 10/0;    //try中捕捉到异常 后面的代码不执行
            System.out.println("try2");
            account.withdraw(100);  //可能出现异常的代码
            System.out.println("try3");
        }catch (BalanceNotEnoughException e){  //多个catch做的是 匹配    不能把 catch (EnoughException e) 放在最前面 因为无法访问子类
            System.out.println("模拟账户余额不足代码");//处理异常的代码
        }catch (ArithmeticException e){
            System.out.println("模拟除数不能为0 处理的逻辑");
        }

        System.out.println("xxxxxxxxxxx"); //出现异常，异常后 内部的代码不会执行，外部的会执行




        try {
            Account.class.getField("").get(null);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }





    public static void fun1() throws BalanceNotEnoughException {
        fun2(); //调用fun3() 异常违背处理 再次抛出

    }
    public static void fun2() throws BalanceNotEnoughException {
            fun3();//调用fun3()方法 异常不处理要抛出去
    }
    public static void fun3() throws BalanceNotEnoughException{

    }

}
